TOP

SQL NULL İşlevleri

SQL işlevleri IFNULL(), ISNULL(), COALESCE() ve NVL()


Aşağıdaki "Products" ("Ürünler") tablosuna bakalım:

ProductIDProductNameSupplierIDCategoryIDUnitPrice
1Chais1110 boxes x 20 bags18.00
2Chang1124 - 12 oz bottles19.00
3Aniseed Syrup1212 - 550 ml bottles10.00
4Chef Anton's Cajun Seasoning2248 - 6 oz jars22.00
5Chef Anton's Gumbo Mix2236 boxes21.35

"UnitsOnOrder" sütununun isteğe bağlı olduğunu ve NULL değerini içerebileceğini varsayalım.

Aşağıdaki talimatı göz önünde bulundurun SELECT:

SELECT ProductName, UnitPrice * (UnitsInStock + UnitsOnOrder)
FROM Products

Yukarıdaki örnekte "UnitsOnOrder" değerlerinden herhangi biri NULL'ye eşitse sonuç NULL olacaktır.

Karar

MySQL

MySQL IFNULL() işlevi, ifade NULL'ye eşitse alternatif bir değer döndürmenize olanak tanır:

SELECT ProductName, UnitPrice * (UnitsInStock + IFNULL(UnitsOnOrder, 0))
FROM Products

veya COALESCE() işlevini kullanabiliriz, örneğin:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products

SQL Sunucusu

SQL Server ISNULL() işlevi, ifadenin NULL değerine sahip olması durumunda alternatif bir değer döndürmenize olanak tanır:

SELECT ProductName, UnitPrice * (UnitsInStock + ISNULL(UnitsOnOrder, 0))
FROM Products

veya COALESCE() işlevini kullanabiliriz, örneğin:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products

MS Erişimi

MS Access işlevi IsNull(), ifade null ise TRUE (-1) değerini döndürür, aksi takdirde FALSE (0) değerini döndürür:

SELECT ProductName, UnitPrice * (UnitsInStock + IIF(IsNull(UnitsOnOrder), 0, UnitsOnOrder))
FROM Products

Oracle

Oracle NVL() işlevi aynı sonucu elde eder:

SELECT ProductName, UnitPrice * (UnitsInStock + NVL(UnitsOnOrder, 0))
FROM Products

veya COALESCE() işlevini kullanabiliriz, örneğin:

SELECT ProductName, UnitPrice * (UnitsInStock + COALESCE(UnitsOnOrder, 0))
FROM Products